/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.ufrn.engcomp.pds.helloopc.modelo.persistencia;

/**
 *
 * @author ufrn
 */
public class FactoryDAO {

    private static FactoryDAO singleton;

    private FactoryDAO() {

    }

    public static FactoryDAO getInstance() {
        if (singleton == null) {
            singleton = new FactoryDAO();
        }

        return singleton;
    }

    public IDAO createDAO(String tipo) throws PersistenciaException {
            try {
                return (IDAO)Class.forName(this.getClass().getPackage().getName() + "." + tipo + "DAO").newInstance();
            } catch(ClassNotFoundException cnfex) {
                //throw new PersistenciaException("Erro na instanciação da classe DAO para " + tipo + ".", cnfex);
            } catch(InstantiationException iex) {
                //throw new PersistenciaException("Erro na instanciação da classe DAO para " + tipo + ".", iex);
            } catch(IllegalAccessException iaex) {
                //throw new PersistenciaException("Erro na instanciação da classe DAO para " + tipo + ".", iaex);
            }
            return new GenericDAO();
    }

}
